osdevfandomcom_ru-20200214-history
VESA
VESA (англ. Video Electronics Standards Association) - Ассоциация Стандартов Видеоэлектроники. Появление новых видеоадаптеров SVGA с большими разрешениями и числим цветов привело к появлению новых стандартов, собранных под эгидой ассоциации VESA. Одним из таких стандартов является VBE (англ. VESA BIOS EXTENSION) - расширение VESA для BIOS. =Функции VBE= Для вызова функций VBE используем прерывание 10h mov ax,4Fxxh Int 10h Где xx- номер функции весы. После вызова функции в ax возвращается статус вызванной функции. Статус это значения стандартны для всех функций VESA: AL = 4Fh; Функция поддерживается AL <>4Fh; Функция не поддерживается AH = 00h; Вызов функции удачен AH = 01h; Вызов функции не удачен Функция AL=00- Return VBE Controller Information Получение Информации о VBE контролере. Input: AX = 4F00h ES:DI = Буфер 512 байт для структуры VbeInfoBlock Перед вызовом функции нужно записать в поле VESASignature=”VBE2” – дело совместимости. +---------------+----------+----+----------------------------------+ |VESASignature | 4 Байта | 00h| "VESA" | +---------------+----------+----+----------------------------------+ |VESAVersion | 2 Байта | 04h| номер версии VBA, BCD | +---------------+----------+----+----------------------------------+ |OEMStringPtr | 4 Байта | 06h| указатель на строку с названием | | | | | производителя (OEM), ASCIIZ | +---------------+----------+----+----------------------------------+ |Capabilities | 4 Байта | 0Ah| флаги графических возможностей | +---------------+----------+----+----------------------------------+ |VideoModePtr | 4 Байта | 0Eh| указатель на список | | | | | поддерживаемых видеорежимов | +---------------+----------+----+----------------------------------+ |TotalMemory | 2 Байта | 12h| количество видеопамяти в | | | | | 64-килобайтных блоках | +---------------+----------+----+----------------------------------+ |InVersion | 2 Байта | 14h| внутренняя версия реализации VBA | +---------------+----------+----+----------------------------------+ |NameFirme | 4 Байта | 16h| указатель на название | | | | | производителя, ASCIIZ | +---------------+----------+----+----------------------------------+ |NameVESA | 4 Байта | 1Ah| указатель на название | | | | | видеоадаптера, ASCIIZ | +---------------+----------+----+----------------------------------+ |PTRVESAVersion | 4 Байта | 1Eh| указатель на название версия | | | | | видеоадаптера, ASCIIZ | +---------------+----------+----+----------------------------------+ |Reserved | 222 Байт | 20h| зарезервировано | +---------------+----------+----+----------------------------------+ |Reserved2 | 256 Байт |100h| зарезервировано для внутренних | | | | | данных | +---------------+----------+----+----------------------------------+ Для тех, кто не знает: ASCIIZ – это строка, закачивающаяся на 0 BCD десятичный формат. Старшая часть хранится во втором байте, младшая - в первом байте. Каждые 4 бита это числа от 0 до 9. Примеры: 0102h=>1.02; 0300h=>3.0 VideoModePtr – указатель на список WORDов. Значение FFFFh - последний элемент в списке. Каждый Word это номер поддерживаемого видео режима (за исключением FFFFh). Capabilities – возможности видеоадаптера. D0 = 0 DAC is fixed width, with 6 bits per primary color = 1 DAC width is switchable to 8 bits per primary color D1 = 0 Controller is VGA compatible = 1 Controller is not VGA compatible D2 = 0 Normal RAMDAC operation = 1 When programming large blocks of information to the RAMDAC, use the blank bit in Function 09h. D3 = 0 No hardware stereoscopic signaling support = 1 Hardware stereoscopic signaling supported by controller D4 = 0 Stereo signaling supported via external VESA stereo connector = 1 Stereo signaling supported via VESA EVC connector D5-31 = Reserved Reserved2 – предназначено для хранения OEM такой информации, как строки PTRVESAVersion, NameFirme, NameVESA. Функция AL=01- Return VBE mode information Получение информации об одном из режимов VBE. Input: AX = 4F01h CX=MODE ES:DI = Указатель на буфер для структуры ModeInfoBlock =VBE в защищенном режиме= В защищенном режиме поддержка функций VESA реализована крайне странно. Во второй версии стандарта введена функция 0AH - RETURN VBE PROTECTED MODE INTERFACE, которая позволяет вызывать ряд функций, но функционал её очень мал. Зато появился линейный буфер LFB. Почти вся видео память доступна одним окном в верхних адресах физической памяти. Есть расширение “PMID”, но оно может и отсутствовать. Расширение “PMID” введено в третьей версии стандарта. Для проверки поддержки БИОСом видео карты “PMID”, следует произвести поиск сигнатуры “PMID” в диапазоне адресов 0C0000h-0DFFFFh “PMID” – это расширение VESA 3, поэтому может и отсутствовать. Структура PMID такова: +-----------------------+--------+------+------------+ |Назначение поля |Смещение|размер| Значение | +-----------------------+--------+------+------------+ |Сигнатура | 00h |4Байта|”PMID”ASCII | +-----------------------+--------+------+------------+ |точка входа | 04h |2Байта| смещение | +-----------------------+--------+------+------------+ |PM инициализация | 06h |2Байта| смещение | +-----------------------+--------+------+------------+ | BIOSDataSel | 08h |2Байта| 0 | +-----------------------+--------+------+------------+ | A0000 Селектор | 0Ah |2Байта| A000h | +-----------------------+--------+------+------------+ | B0000 Селектор | 0Ch |2Байта| B000h | +-----------------------+--------+------+------------+ | B8000 Селектор | 0Eh |2Байта| B800h | +-----------------------+--------+------+------------+ |Селектор сегмента кода | 10h |2Байта| C000h | +-----------------------+--------+------+------------+ |Защищенный режим | 12h | Байт |0 или 1 Bool| +-----------------------+--------+------+------------+ |Контрольная сумма | 13h | Байт | Сумма | +-----------------------+--------+------+------------+ =Ссылки= 1. VBE версия 3.0 от ассоциации VESA vbe3.pdf 2. VBE версия 2.0 от ассоциации VESA vbe20.txt 3. VBE версия 1.2 от ассоциации VESA vesasp12.txt Категория:Оборудование Категория:BIOS